#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
from enum import Enum

class LandmarkMode(Enum):
    """
    嵌入式技能大赛协议，标志物模式枚举
    """
    MODE_A = 0  # 某标志物A
    MODE_B = 1  # 某标志物B

    GEAR_PLUS_ONE = 2
    GEAR_PLUS_TWO = 3
    GEAR_PLUS_THRID = 4

    PAGE_UP = 5  # 上翻页
    PAGE_DOWN = 6
    PAGE_AUTO = 7

    TIMER_START = 8  # 开始计时
    TIMER_STOP = 9
    TIMER_CLEAN = 10


class TrafficRGB(Enum):
    RED = 0x01  # 交通灯红色信号
    GREEN = 0x02
    YELLOW = 0x03


class GarageLayer(Enum):
    LEVEL_ONE = 0x01  # 车库第一层
    LEVEL_TWO = 0x02
    LEVEL_THREE = 0x03
    LEVEL_FOUR = 0x04


class BusStation(Enum):
    FUQIANG_STATION = 0x00  # 富强站
    MINZHU_STATION = 0x01  # 民主站
    WENMING_STATION = 0x02  # 文明站
    HEXIE_STATION = 0x03  # 和谐站
    AIGUO_STATION = 0x04  # 爱国站
    JINGYE_STATION = 0x05  # 敬业站
    YOUSHAN_STATION = 0x06  # 友善站


"""通信协议"""
FRAME_HEAD = 0x55    # 包头
FRAME_TAIL = 0xBB    # 包尾

''''帧头第二位'''
MAIN_CAR = 0xAA      # 主车
VGA_CAR = 0x02       # 从车
ROAD_GATE = 0x03     # 道闸
LED_SHOW = 0x04      # LED显示标准物
GARAGE_B = 0x05      # 车库B
VOICE_PLAY = 0x06    # 语音播报标志物
BUSSTATION = 0x06    # 公交站台
INFRARED_ALARM = 0x07  # 红外报警台
TFT_SHOW_B = 0x08      # TFT显示标准物B
STREET_LAMP = 0X09     # 智能路灯
WIRELESS_CHARGING = 0X0A  # 无线充电
TFT_SHOW_A = 0X0B      # TFT显示标志物A
ETC = 0X0C             # ETC 系统
GARAGE_A = 0X0D        # 车库A
TRAFFIC_LIGHTS_A = 0X0E  # 交通灯A
TRAFFIC_LIGHTS_B = 0X0F  # 交通灯B
SCORING_TERMINAL = 0XAF  # 自动评分终端
''''end'''

''''帧头第三位  当帧头第二位为0xAA或0x22的情况'''
'''小车主指令'''
CAR_STOP = 0X01  # 竞赛平台停止
CAR_FORWARD = 0X02  # 竞赛平台前进
CAR_BACK = 0X03  # 竞赛平台后退
CAR_TRACK_LEFT = 0X04  # 竞赛平台左转（循迹状态）
CAR_TRACK_RIGHT = 0X05  # 竞赛平台右转（循迹状态）
CAR_TRACK_LINE = 0X06  # 竞赛平台循迹
CAR_ENCODER_CLEAN = 0X07  # 码盘清零
CAR_ANGLE_LEFT = 0x08  # 竞赛平台左转（指定角度）
CAR_ANGLE_RIGHT = 0x09  # 竞赛平台右转（指定角度）
CAR_TRANSLATION_LEFT = 0x0A  # 竞赛平台左平移
CAR_TRANSLATION_RIGHT = 0x0B  # 竞赛平台右平移
VGA_AUTO_RUN = 0xA5  # 从车启动全自动
CAR_REQUEST_CONNECTION = 0xAB    # 请求和底层连接
CAR_VISUAL_DRIVING = 0xAE        # 自动驾驶底层转固定90度
CAR_ZEBRA_CROSSING = 0xAF        # 自动驾驶 小车走斑马线

INFRARED_FORWARD_3 = 0X10  # 前三字节红外数据
INFRARED_BACK_3 = 0x11     # 后三字节红外数据
INFRARED_SEND = 0X12       # 发射六字节红外数据

INDICATOR_LIGHT = 0X20  # 指示灯
BUZZER = 0X30  # 蜂鸣器
RETAIN = 0X40  # 保留
PAGE_UP = 0X50  # 相框照片上翻
PAGE_DOWN = 0X51  # 相框照片下翻
BRIGHTNESS_PLUS_ONE = 0X61  # 光源档位加 1
BRIGHTNESS_PLUS_TWO = 0X62  # 光源档位加 2
BRIGHTNESS_PLUS_THREE = 0X63  # 光源档位加 3
VGA_BACK_DATA = 0X80  # 竞赛平台（从车）回传数据控制
VOICE_CONTROL = 0x90  # 语音控制
'''end'''

''''帧头第三位  当帧头第二位为0x03的情况'''
'''道闸主指令'''
OPEN_ROAD_GATE = 0x01   # 开道闸
CLOSE_ROAD_GATE = 0x02  # 关道闸
'''end'''

"""LED 显示标志物相关"""
"""MAJOR"""
LED_FRIST_LINE = 0x01
LED_TWO_LINE = 0x02
LED_TIME = 0x03
LED_SHOW_DISTANCE = 0x04

"""
# 立体显示相关
MAJOR
"""
FOUR_LICENSE_PLATES = 0X20  # 接收前四位车牌信息模式
SEND_PLATES = 0X10          # 接收后两位车牌信息与两位坐标信息模式 并显示
DISTANCE_MODE = 0X11        # 显示距离模式
GRAPHICS_MODE = 0X12        # 显示图形模式
COLOR_MODE = 0X13           # 显示颜色模式
ROAD_MODE = 0X14            # 显示路况模式
DEFAULT_MODE = 0X15         # 显示默认模式

"""TFT显示相关
MAJOR
"""
TFT_PHOTO_MODE = 0x10
TFT_PLATE_MODE_F = 0x20
TFT_PLATE_MODE_L = 0x21
TFT_TIME_MODE = 0x30
TFT_HEX_MODE = 0x40
TFT_DISTANCE_MODE = 0x50

"""立体车库相关
MAJOR
"""
GARAGE_EVATOR = 0x01
GARAGE_STATUS = 0x02

"""交通灯相关
MAJOR
"""
TRAFFIC_LIGHTS_RECOGN_MODE = 0x01
TRAFFIC_LIGHTS_SEND_RESULT = 0x02


"""公交站台
MAJOR
"""
BUS_STATION_FIXED_NAME = 0x10
BUS_STATION_RANDOM_NAME = 0x20
BUS_STATION_UPDATE_DATE = 0x30
BUS_STATION_UPDATE_TIME = 0x40


# 主车 STOP_FLAG 状态位
STOP_FINISH = 0x00                  # 停止完成标志
TRACE_FINISH = 0x01                 # 循迹完成标志
TURN_FINISH = 0x02                  # 左右转向完成标志
GO_BACK_FINISH= 0x03                # 不带循迹前进或后退完成标志


# 标志物返回的状态信息
GATE_OPEN_FINISH = 0x05             # 道闸打开完成标志
VOICE_TTS_FINISH = 0x4F             # 语音播报完成标志
